local opt = vim.opt
-- leader 键设置
vim.g.mapleader = " "

-- 行号
opt.number = true
opt.relativenumber = true -- 相对行号


-- 剪贴板
opt.clipboard:append("unnamedplus") -- 使用系统剪贴板

-- 搜索设置
vim.o.ignorecase = true
vim.o.hlsearch = true
vim.o.incsearch = true

-- 行号
vim.wo.number = true
vim.wo.relativenumber = true

-- 语法高亮
vim.cmd("syntax enable")

-- 当前行高亮
vim.wo.cursorline = true

-- 高亮当前行样式
vim.cmd [[
    highlight CursorLine cterm=bold ctermbg=25 guibg=#3266d0 guifg=white
]]

-- 右侧竖线（如果想启用 colorcolumn）
-- vim.wo.colorcolumn = "100"
-- vim.cmd [[highlight ColorColumn ctermbg=darkgray]]

-- markdown / json 显示所有字符
vim.o.conceallevel = 0

-- 更新延时（用于光标移动等）
vim.o.updatetime = 300

-- 不自动换行
vim.wo.wrap = false

-- GUI 字体
vim.o.guifont = "Consolas:h13"

-- 启用鼠标
vim.o.mouse = "a"

-- 窗口分割方向
vim.o.splitbelow = true
vim.o.splitright = true

-- 缩进与制表符设置
vim.o.expandtab = true
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.softtabstop = 4

-- 启用智能缩进（语言相关）
vim.cmd("filetype indent on")

-- 关闭 vi 兼容
vim.o.compatible = false
vim.o.backspace = "indent,eol,start"

-- 禁止临时文件
vim.o.undofile = false
vim.o.backup = false
vim.o.swapfile = false

-- 编码支持
vim.o.fileencodings = "utf-8,gbk,gb2312,big5,ucs-bom,gb18030,cp936"

-- 语法折叠设置
-- vim.o.foldmethod = "syntax" -- 可启用语法折叠
vim.o.foldlevelstart = 99

-- 自定义折叠快捷键（大写小写反转）
local opts = { noremap = true, silent = true }
vim.keymap.set("n", "zc", ":normal! zC<CR>", opts)
vim.keymap.set("n", "zo", ":normal! zO<CR>", opts)
vim.keymap.set("n", "zr", ":normal! zR<CR>", opts)
vim.keymap.set("n", "zm", ":normal! zM<CR>", opts)
vim.keymap.set("n", "zC", ":normal! zc<CR>", opts)
vim.keymap.set("n", "zO", ":normal! zo<CR>", opts)
vim.keymap.set("n", "zR", ":normal! zr<CR>", opts)
vim.keymap.set("n", "zM", ":normal! zm<CR>", opts)



-- LeaderF 快捷键映射
local keymap = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true }

-- Leaderf 主界面
keymap("n", "<leader>lf", ":Leaderf<CR>", opts)

-- Ctrl + P 打开 Leaderf 文件搜索（覆盖默认快捷键）
vim.g.Lf_ShortcutF = "<C-P>"

-- 标签列表
keymap("n", "<leader>lft", ":LeaderfBufTag<CR>", opts)
-- 函数列表
keymap("n", "<leader>o", ":LeaderfFunction<CR>", opts)
keymap("n", "<leader>lff", ":LeaderfFunction!<CR>", opts)
-- 行搜索
keymap("n", "<leader>lfl", ":LeaderfLine<CR>", opts)
keymap("n", "<leader>lfL", ":LeaderfLineAll<CR>", opts)
-- 使用 ripgrep 全局搜索当前光标下单词
keymap("n", "<leader>rg", ":lua require('core/leaderf_utils').search_current_word()<CR>", opts)
-- 手动输入搜索内容（光标自动放到引号中）
keymap("n", "<leader>Rg", ":Leaderf! rg \"\"<Left>", opt)
-- F12 使用 -w 精确搜索当前光标下单词
keymap("n", "<F12>", ":lua require('core/leaderf_utils').search_current_word_wordwise()<CR>", opts)
-- 添加到 Neovim 配置文件 (如: ~/.config/nvim/init.lua)
keymap("v", "<leader>cp", ":lua require('core/leaderf_utils').print_on_terminal()<CR>", {
    noremap = true,
    silent = true,
    desc = "Execute sed on selected lines and show output"
})

-- 关闭 dev icons，避免乱码
vim.g.Lf_ShowDevIcons = 0

-- 忽略目录和文件
vim.g.Lf_WildIgnore = {
  dir = { ".svn", ".git", ".vscode", "build" },
  file = { "*.o", "*.so", ".exe", ".dll" },
}

-- 搜索子模块
vim.g.Lf_RecurseSubmodules = 1

-- gtags 集成
vim.env.GTAGSLABEL = "native-pygments"
vim.g.Lf_GtagsSource = 2
vim.g.Lf_GtagsAutoGenerate = 1
vim.g.Lf_GtagsAutoUpdate = 1

-- 切换到上一个buffer
keymap("n", "<leader><Tab>", ":b#<CR>", opts)

